package com.xiangge.abstract1;

public class AbstractDemo1 {
    public static void main(String[] args) {
        // 在主方法中不能直接调用抽象类
        // Fu fu = new Fu();
        // 在主方法中使用抽象类，需要通过子类来进行调用
        Zi zi = new Zi();
        // 通过子类来调用父类的抽象方法
        zi.show();
        // 通过子类来调用抽象父类的其他
        zi.age = 1;
    }
}
// 创建一个抽象的父类，抽象的父类需要通过子类来调用
abstract class Fu{
    // 定义属性
    public int age;
    public static String name;
    // 定义行为
    public void eat(){}
    public static void sleep(){}
    // 定义构造方法
    public Fu() {
    }
    public Fu(int age) {
        this.age = age;
    }
    // "构造代码块"   "静态代码块"
    {}
    static {}

    // 定义抽象方法  和正常的行为方法不同，抽象方法没有{},只在()中根据情况加入形参
    public abstract void show();
}
// 创建一个正常的子类,继承父类
class Zi extends Fu{
    // 如果抽象父类中存在抽象方法，子类中需要进行方法重写
    @Override
    public void show() {

    }
}